package cn.stylefeng.guns.modular.storage.service;

import cn.stylefeng.guns.base.pojo.page.LayuiPageInfo;
import cn.stylefeng.guns.modular.storage.entity.StorageStock;
import cn.stylefeng.guns.modular.storage.entity.StorageStockDetailed;
import cn.stylefeng.guns.modular.storage.model.params.StorageStockDetailedParam;
import cn.stylefeng.guns.modular.storage.model.params.StorageStockParam;
import cn.stylefeng.guns.modular.storage.model.result.StorageStockDetailedResult;
import cn.stylefeng.guns.modular.storage.model.result.StorageStockResult;
import cn.stylefeng.guns.sys.modular.system.entity.User;

import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * <p>
 * 库存流水 服务类
 * </p>
 *
 * @author zhucx
 * @since 2022-01-15
 */
public interface StorageStockDetailedService extends IService<StorageStockDetailed> {

    /**
     * 新增
     *
     * @author zhucx
     * @Date 2022-01-15
     */
    void add(StorageStockDetailedParam param);

    /**
     * 删除
     *
     * @author zhucx
     * @Date 2022-01-15
     */
    void delete(StorageStockDetailedParam param);

    /**
     * 更新
     *
     * @author zhucx
     * @Date 2022-01-15
     */
    void update(StorageStockDetailedParam param);

    /**
     * 查询单条数据，Specification模式
     *
     * @author zhucx
     * @Date 2022-01-15
     */
    StorageStockDetailedResult findBySpec(StorageStockDetailedParam param);

    /**
     * 查询列表，Specification模式
     *
     * @author zhucx
     * @Date 2022-01-15
     */
    List<StorageStockDetailedResult> findListBySpec(StorageStockDetailedParam param);

    /**
     * 查询分页数据，Specification模式
     *
     * @author zhucx
     * @Date 2022-01-15
     */
     LayuiPageInfo findPageBySpec(StorageStockDetailedParam param,String condition);

     /**
      * 批量新增 库存流水
      * @param operation 业务名称
      * @param orderNumber 单号
      * @param type 类型
      * @param content 内容
      * @param ssList 库存list
      */
	void batchAdd(String operation,String orderNumber,String type,String content,List<StorageStock> ssList,User user);

    /**
     * 批量新增 库存流水
     * @param operation 业务名称
     * @param orderNumber 单号
     * @param type 类型
     * @param content 内容
     * @param ssp 库存
     */
	void addNewDetailed(String operation, String orderNumber, String type, String content, StorageStockParam ssp,User user);

    /**
     * 批量新增 库存流水
     * @param operation 业务名称
     * @param orderNumber 单号
     * @param type 类型
     * @param content 内容
     * @param ssp 库存
     */
	void addNewDetailedResult(String operation, String orderNumber, String type, String content, StorageStockResult ssp,User user);

    /**
     * 批量新增 库存流水
     * @param operation 业务名称
     * @param orderNumber 单号
     * @param type 类型
     * @param content 内容
     * @param ssp 库存
     */
	void addNewDetailedstorageStock(String operation, String orderNumber, String type, String content, StorageStock ssp,User user);

	LayuiPageInfo findPageByGoodsSpec(StorageStockDetailedParam param, String condition);

}
